ci: lint SKILL.md frontmatter on every push#172
Open
MukundaKatta wants to merge 1 commit intoJuliusBrussee:mainfrom
Open
ci: lint SKILL.md frontmatter on every push#172MukundaKatta wants to merge 1 commit intoJuliusBrussee:mainfrom
MukundaKatta wants to merge 1 commit intoJuliusBrussee:mainfrom
Conversation
Adds a GitHub Actions workflow that validates every SKILL.md file in the repo using claude-skill-linter. Catches at CI time: - Malformed or unparseable YAML frontmatter - Missing required fields (name, description) - name not in kebab-case - description too short to help Claude route to the skill - Hardcoded API keys (sk-, ghp_, AIza, xoxb-) - Broken relative-path references - Unknown/typo'd frontmatter fields All 10 current SKILL.md files pass in strict mode on main, so the workflow starts green. strict: 'true' keeps warnings as errors β worth the signal for a repo this visible; easy to relax if it becomes noise. Path-filtered so the job only runs when a SKILL.md (or the workflow itself) changes β no CI wait on unrelated commits. Action: https://github.com/MukundaKatta/claude-skill-linter (MIT, pinned to v1 for rolling compatibility.) Signed-off-by: Mukunda Katta <mukunda.vjcs6@gmail.com>
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Caveman ships 10 SKILL.md files (across
skills/,plugins/caveman/skills/,caveman-compress/,compress/,caveman/) and grew from 0 β 30k stars in 11 days. That growth means each new contributor PR that touches a skill file is high-leverage β and also a good place for a small mistake to land silently. Malformed frontmatter, a missingdescription, or (worst) a committed API key inenvwould ship to every install.This PR adds CI that catches those at PR time.
What
A single workflow:
.github/workflows/lint-skills.ymlβ path-filtered to only run when aSKILL.md(or the workflow itself) changes. UsesMukundaKatta/claude-skill-linter(MIT, pinned to@v1) to validate:name,description) present and well-formednameis kebab-casedescriptionhas enough substance (and trigger language) for Claude to route to the skillsk-,ghp_,AIza,xoxb-) are absentCurrent state
All 10 existing SKILL.md files pass β in
strictmode, zero warnings, zero errors. The workflow starts green.Ran locally against the repo:
(
.cursor/skills/and.windsurf/skills/also pass; just not globbed by default since they're in dotfile dirs.)Why strict mode
For a repo this visible,
strict: 'true'is worth the signal β warnings (like missing trigger language in a description) become CI errors. If the noise turns out to be counterproductive on community PRs, flipping it to'false'is a one-line change. I'd rather start strict and relax if needed than start lax and miss something.Disclosure
I maintain
claude-skill-linter. Happy to unpin@v1β pin to a specific SHA if you prefer immutability. The Action has no network calls at runtime β all validation is static on the repo's own file contents.Test plan
@v1(rolling major-version tag)